package xyz.hzxiao.service;

import cn.novelweb.tool.upload.local.pojo.UploadFileParam;
import xyz.hzxiao.pojo.UploadSuccessVO;
import xyz.hzxiao.utils.AppResult;

import javax.servlet.http.HttpServletRequest;

/**
 * 文件上传服务类
 *
 * @author ：FuXx
 * @className : xyz.hzxiao.service.FileUploadService
 * @since ：2023/3/7
 */
public interface FileUploadService {

    /**
     * 检查文件MD5（文件MD5若已存在进行秒传）
     *
     * @param fileName 文件名称
     * @param md5      文件md5
     */
    AppResult<?> checkFileMd5(String md5, String fileName) throws Exception;

    /**
     * 断点续传（分片）方式上传文件：用于大文件上传
     *
     * @param param   参数
     * @param request 请求对象
     */
    AppResult<?> shardingUploadFile(UploadFileParam param, HttpServletRequest request) throws Exception;

    /**
     * 分片上传完成后对文件的操作，参数可以按业务自定义
     * 这里单独去原文件名称
     *
     * @return 操作完成
     */
    AppResult<String> uploadSuccess(UploadSuccessVO vo);
}
